package com.ycy;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.io.*;
import java.net.URL;

/**
 * 测试工具类
 *
 * @author tobato
 */
public class TestUtils {

    private TestUtils() {
        // hide for utils
    }

    /**
     * 将String 转换为InputStream
     *
     * @param text
     * @return
     * @throws IOException
     */
    public static InputStream getTextInputStream(String text) {
        // 将String转换为InputStream
        return new ByteArrayInputStream(text.getBytes(TestConstants.DEFAULT_CHARSET));
    }

    /**
     * 获取String长度
     *
     * @param text
     * @return
     * @throws IOException
     */
    public static long getTextLength(String text) {
        return text.getBytes(TestConstants.DEFAULT_CHARSET).length;
    }

    /**
     * 获取文件InputStream
     *
     * @param path
     * @return
     * @throws FileNotFoundException
     */
    public static InputStream getFileInputStream(String path) throws FileNotFoundException {
        return new FileInputStream(getFile(path));
    }

    /**
     * 获取文件
     *
     * @param path
     * @return
     */
    public static File getFile(String path) {
        URL url = TestUtils.class.getResource(path);
        File file = new File(url.getFile());
        return file;
    }

    public static void main(String[] args) {
        // ================ 以下是通过  类加载器 加载资源

        TestUtils testUtils = new TestUtils();
        URL url0 = testUtils.getClass().getClassLoader().getResource("images/gs.jpg");
        System.out.println(url0);

        //  在 ClassLoader 类加载器 使用绝对路径 中无效，找不到资源。
        URL url00 = testUtils.getClass().getClassLoader().getResource("/images/gs.jpg");
        System.out.println(url00);

        // ================ 以下 是通过 classpath 加载资源
       /*
         使用 ClassLoader.getResource() 时，路径不以 / 开头，是相对于 classpath 根目录的
         使用 Class.getResource() 时：
            以 / 开头表示从 classpath 根目录开始
            不以 / 开头表示从 相对于当前类所在包（应对 资源在包路径下的情况）
        */
        URL url1 = TestUtils.class.getResource("/images/gs.jpg");
        System.out.println(url1);

        // log4j2.springboot 是spring 依赖包中 资源文件
        URL url2 = SpringApplication.class.getResource("/log4j2.springboot");
        System.out.println(url2);

        // log4j2.springboot 也能读取到
        URL URL3 = TestUtils.class.getResource("/log4j2.springboot");
        System.out.println(URL3);

    }


}
